package com.eian.boot.crypto.core;

import com.eian.boot.crypto.enums.CryptoAlgorithm;
import com.eian.boot.crypto.model.CryptoContext;

/**
 * 解密策略接口
 * <p>
 * 调用者实现此接口以提供具体的解密算法实现
 *
 * @author eian
 */
public interface DecryptStrategy {

    /**
     * 支持的算法类型
     *
     * @return 加密算法
     */
    CryptoAlgorithm algorithm();

    /**
     * 解密字符串
     *
     * @param ciphertext 密文
     * @param context    解密上下文
     * @return 明文
     */
    String decrypt(String ciphertext, CryptoContext context);

    /**
     * 解密字节数组
     *
     * @param ciphertext 密文字节数组
     * @param context    解密上下文
     * @return 明文字节数组
     */
    byte[] decrypt(byte[] ciphertext, CryptoContext context);
}

